/**
 * 给定一个链表，两两交换其中相邻的节点，并返回交换后的链表。
 * 你不能只是单纯的改变节点内部的值，而是需要实际的进行节点交换。
 */
public class exercise03 {
    public ListNode swapPairs(ListNode head) {
        if(head == null || head.next == null){
            return head;
        }
        ListNode cur = head;
        ListNode prev = cur.next;
        ListNode temp = cur;
        while (cur.next != null || cur.next.next != null){
            if(cur == head){
                head = head.next;
            }
            cur.next = prev.next;
            temp = cur;
            cur = cur.next;
            prev.next = temp;
            if(cur != null && cur.next != null){
                prev = cur.next;
                temp.next = prev;
            }else{
                return head;
            }
        }
        return head;
    }
}
